package cn.com.pansky.sdk;

import net.vsame.url2sql.action.BaseAction;
import cn.com.pansky.util.DateUtil;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class API extends BaseAction{
	
	/**
	 * 返回错误信息
	 * @return
	 */
	private static JSONObject getErrorInfo(int code, String msg) {
		JSONObject obj = new JSONObject();
		obj.put("code", code);
		obj.put("msg", msg);
		return obj;
	}
	
	/**
	 * 调用核心系统公共接口
	 * @param controller
	 * @param params
	 * @return
	 */
	public static JSONObject sendController(String controller, JSONObject params) {
		
		JSONObject obj = null;
		try {
			params.put("BIE200", "0"); 
			System.out.println(DateUtil.current19Time()+"开始调用核心接口，接口名："+params.getString("AAA121"));
			obj = OpenApiCommunicateHelper.send(controller, params);
			System.out.println("核心返回："+obj);
			System.out.println(DateUtil.current19Time()+"调用核心接口结束");
			obj.put("code", 0);
		} catch (Exception e) {
			e.printStackTrace();
			obj = getErrorInfo(-50, e.getMessage());
		}
		return obj;
	}
	
	/**
	 * 调用业务系统接口获取人员状态
	 * @param AAC002 身份证
	 * @return
	 */
	public static JSONArray getPersonState(String[] AAC002) {
		
		JSONObject obj = null;
		try {
			JSONObject params = new JSONObject();
			params.put("AAA121", "QPERSONINFO"); //参保登记查询
			params.put("AAC002", AAC002); // 身份证号数组
			params.put("BIE200", "0"); 
			obj = OpenApiCommunicateHelper.send("personInfoQueryController.json", params);
			obj.put("code", 0);
			if(obj.getBooleanValue("SUCCESS")) {
				return obj.getJSONArray("MSG");
			}
		} catch (Exception e) {
			e.printStackTrace();
			obj = getErrorInfo(-50, e.getMessage());
		}
		return new JSONArray();
	}
	
	/**
	 * 根据商户号获取秘钥
	 * @param AAE051
	 * @return
	 */
//	public static String getSignkey(String AAE051) {
//		JSONObject param = new JSONObject();
//		param.put("AAA121", "QBACKSIG"); // 业务类型
//		param.put("AAC002", "xxx");
//		param.put("AAE051", AAE051);
//		// 调用获取所有商户接口
//		JSONObject result = API.sendController("getSecretQueryController.json",param);
//		JSONObject object = result.getJSONObject("MSG");
//		return object.getString("BAE300");
//	}
	
	/**
	 * 获取商户号或者秘钥
	 * @param AAE051
	 * @return
	 */
	public static JSONArray getAAE051OrSignkey(String AAE051) {
		JSONObject param = new JSONObject();
		param.put("AAA121", "QBF09"); // 业务类型
		param.put("AAC002", "xxx");
		param.put("AAE051", AAE051);
		// 调用获取所有商户接口
		JSONObject result = API.sendController("commercialQueryController.json",param);
		JSONArray array = result.getJSONArray("MSG");
		return array;
	}
	
	/**
	 * 调用业务接口，传入订单JSONArray，保存至业务临时表中
	 * @param AAE051
	 * @return
	 */
	public static void insertSysRA22(JSONArray jsonArray) {
		JSONObject param = new JSONObject();
		param.put("AAA121", "QACCOUNT"); // 业务类型
		param.put("AAC002", "xxx");
		param.put("MSG", jsonArray); // 订单数组
		// 调用修改业务库RA22退款临时表
		JSONObject object = API.sendController("queryAccountController.json",param);
		System.out.println(object.toString());
	}
	
	/**
	 * 修改业务库RA22退款临时表
	 * @param AAE051
	 * @return
	 */
	public static void UpdSysRA22(String AAZ288, String AAD008, String AAE356) {
		JSONObject param = new JSONObject();
		param.put("AAA121", "RACCOUNT"); // 业务类型
		param.put("AAC002", "xxx");
		param.put("AAZ288", AAZ288); // 订单号
		param.put("AAD008", AAD008); // 流水号
		param.put("AAE356", AAE356); // 退款成功标识
		// 调用修改业务库RA22退款临时表
		JSONObject object = API.sendController("rbackAccountController.json",param);
		System.out.println(object.toString());
	}
	
	public static void main(String[] args) {
//		String[] str = {"14262219920107153x"};
//		JSONObject params = new JSONObject();
//		params.put("AAA121", "QPERSONINFO"); //参保登记查询
//		params.put("AAC002", str); // 身份证号数组
//		params.put("BIE200", "0"); 
//		System.out.println(params);
//		System.out.println(OpenApiCommunicateHelper.send("personInfoQueryController.json", params));
		
//		JSONObject param = new JSONObject();
//		param.put("AAA121", "A2002003"); // 缴费标识
//		param.put("AAC002", ""); // 身份证号
//		param.put("AAZ065", "YC"); // 银行ID
//		param.put("AAE010", "999999"); // 当事人缴费账号
//		param.put("AAE074", "123456789"); // 银行缴费流水号
//		param.put("AAE022", "300"); // 缴费金额
//		param.put("AAZ288", "49666902"); // 社保流水号
//		// 调用核心业务接口，传入账户信息进行缴费操作
//		String userId = "wangrunhua";
//		param.put("AAE011", userId);
//		System.out.println(param);
//		JSONObject object = API.sendController("paymentController.json", param);
//		System.out.println(object);
		
		JSONObject param = new JSONObject();
		param.put("AAA121", "A2002001"); //缴费记录标识
		param.put("AAC002", "610327197304270520"); // 身份证号
		param.put("AAE041", "2008"); // 开始年度
		param.put("AAE042", "2016"); // 开始年度
		
//		String userId = user.getString("AA001");
		param.put("AAE011", "123456789");
		System.out.println(param);
		JSONObject json = API.sendController("paymentGradeController.json", param);
		System.out.println(json);
	}
}
